#pragma once

#include <luisa/runtime/rhi/curve_basis.h>
#include <luisa/xir/metadata.h>

namespace luisa::compute::xir {

class LUISA_XIR_API CurveBasisMD final : public DerivedMetadata<CurveBasisMD, DerivedMetadataTag::CURVE_BASIS> {

private:
    CurveBasisSet _curve_basis_set;

public:
    explicit CurveBasisMD(CurveBasisSet set = {}) noexcept;
    [[nodiscard]] auto &curve_basis_set() noexcept { return _curve_basis_set; }
    [[nodiscard]] auto &curve_basis_set() const noexcept { return _curve_basis_set; }
    [[nodiscard]] ManagedPtr<Metadata> clone() const noexcept override;
};

}// namespace luisa::compute::xir
